package br.com.admGearman.cadastro.apresentacao;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.com.admGearman.cadastro.negocio.EstLojaNgc;
import br.com.admGearman.cadastro.vo.EstEmpresaVo;
import br.com.admGearman.cadastro.vo.EstLojaVo;
import br.com.admGearman.util.jsf.AbstractBean;
import br.com.admGearman.util.jsf.JSFUtil;
import br.com.r2.exception.R2Exception;
import br.com.r2.util.tipodado.Flag;
import br.com.r2.util.tipodado.YesNo;

public class EstLojaBean extends AbstractBean<EstLojaVo, EstLojaNgc>
{

   JSFUtil jsfUtil = new JSFUtil();

   List<EstLojaVo> listaEstabelecimentos = new ArrayList<EstLojaVo>();
   
   public EstLojaBean()
   {
      super(EstLojaNgc.getInstancia());
      this.ACTION_SEARCH = "estabelecimento";
      this.pageTitle = "titulo_estabelecimento";
   }

   @Override
   public String preparaPesquisar()
   {
      try
      {
         EstEmpresaVo empresaVo = this.getEntity().getEstEmpresaVo();
         EstLojaVo filtroVo = new EstLojaVo();
         filtroVo.setEstEmpresaVo(empresaVo);
         List<EstLojaVo> listaEstabelecimentos = EstLojaNgc.getInstancia().pesquisar(filtroVo, EstLojaNgc.JOIN_EMPRESA);
         
         this.setListaEstabelecimentos(listaEstabelecimentos);
      }
      catch (R2Exception e)
      {
         FacesMessage message = new FacesMessage(e.getMensagem());  
         message.setSeverity(FacesMessage.SEVERITY_ERROR);  
         FacesContext.getCurrentInstance().addMessage("", message);
      }
      
      setCurrentState(STATE_INSERT);
      return ACTION_SEARCH;
   }

   public void adicionar(ActionEvent event)
   {
      try
      {
         EstLojaVo estLojaVo = this.getEntity();
         estLojaVo.setSituacao(new Flag(YesNo.YES));
         
         EstLojaNgc.getInstancia().inserir(estLojaVo);
         this.getListaEstabelecimentos().add(estLojaVo);
         
         EstLojaVo vo = new EstLojaVo();
         EstEmpresaVo empresaVo = this.getEntity().getEstEmpresaVo();
         vo.setEstEmpresaVo(empresaVo);
         
         this.setEntity(vo);
         
         FacesContext.getCurrentInstance().addMessage(null, 
                           new FacesMessage(FacesMessage.SEVERITY_INFO, jsfUtil.getBundle().getString("item.incluido.sucesso"), null));
      }
      catch (R2Exception e)
      {
         FacesMessage message = new FacesMessage(e.getMensagem());
         message.setSeverity(FacesMessage.SEVERITY_ERROR);
         FacesContext.getCurrentInstance().addMessage("", message);
      }
   }

   public void excluir(ActionEvent event)
   {
      try
      {
         if (this.getTblData() != null)
         {
            EstLojaVo vo = (EstLojaVo) this.getTblData().getRowData();
            vo.setSituacao(new Flag(YesNo.NO));
            
            EstLojaNgc.getInstancia().alterar(vo);
            
            FacesContext.getCurrentInstance().addMessage(null, 
                  new FacesMessage(FacesMessage.SEVERITY_INFO, jsfUtil.getBundle().getString("item.alterado.sucesso"), null));
         }
      }
      catch (R2Exception e)
      {
         FacesMessage message = new FacesMessage(e.getMensagem());
         message.setSeverity(FacesMessage.SEVERITY_ERROR);
         FacesContext.getCurrentInstance().addMessage("", message);
      }
   }
   
   public List<EstLojaVo> getListaEstabelecimentos()
   {
      return listaEstabelecimentos;
   }

   public void setListaEstabelecimentos(List<EstLojaVo> listaEstabelecimentos)
   {
      this.listaEstabelecimentos = listaEstabelecimentos;
   }
   
}
